use project_1::GeneratedMacro;
use project_1::test_type::test_struct::TestStruct;
use project_1::test_type::test_type::TestType;

fn main() {
    lib_test_forspace::lib_print();

    let mut test_struct = TestStruct::default();
    // test_struct.generate_print();
    test_struct.generate_macro_print();

    let strcut_name = test_struct.get_struct_name_macro();
    println!("Hello, world!");


    println!("--------------------------MACRO------------------------------");
    println!("get_struct_name_macro(): {}", strcut_name);
    println!("-------------------------------------------------------------");
    println!("get_field_name_test_int_macro(): {}", test_struct.get_field_name_test_int_macro());
    println!("get_field_name_test_float_macro(): {}", test_struct.get_field_name_test_float_macro());
    println!("get_field_name_test_path_macro(): {}", test_struct.get_field_name_test_path_macro());
    println!("-------------------------------------------------------------");
    println!("get_field_type_name_test_int_macro(): {}", test_struct.get_field_type_name_test_int_macro());
    println!("get_field_type_name_test_float_macro(): {}", test_struct.get_field_type_name_test_float_macro());
    println!("get_field_type_name_test_path_macro(): {}", test_struct.get_field_type_name_test_path_macro());
    println!("-------------------------------------------------------------");
    println!("get_test_int_macro(): {}", test_struct.get_test_int_macro());
    println!("get_test_float_macro(): {}", test_struct.get_test_float_macro());
    println!("get_test_path_macro(): {:?}", test_struct.get_test_path_macro());
    println!("-------------------------------------------------------------");
    test_struct.set_test_int_macro(123);
    test_struct.set_test_float_macro(321.0);
    test_struct.set_test_path_macro(TestType::new(1, 0.5));
    println!("get_test_int_macro(): {}", test_struct.get_test_int_macro());
    println!("get_test_float_macro(): {}", test_struct.get_test_float_macro());
    println!("get_test_path_macro(): {:?}", test_struct.get_test_path_macro());
    println!("-------------------------------------------------------------");

    // let mut test_struct = TestStruct::default();
    // println!("--------------------------GENERATE---------------------------");
    // println!("get_struct_name(): {}", strcut_name);
    // println!("-------------------------------------------------------------");
    // println!("get_field_name_test_int(): {}", test_struct.get_field_name_test_int());
    // println!("get_field_name_test_float(): {}", test_struct.get_field_name_test_float());
    // println!("get_field_name_test_path(): {}", test_struct.get_field_name_test_path());
    // println!("-------------------------------------------------------------");
    // println!("get_field_type_name_test_int(): {}", test_struct.get_field_type_name_test_int());
    // println!("get_field_type_name_test_float(): {}", test_struct.get_field_type_name_test_float());
    // println!("get_field_type_name_test_path(): {}", test_struct.get_field_type_name_test_path());
    // println!("-------------------------------------------------------------");
    // println!("get_test_int(): {}", test_struct.get_test_int());
    // println!("get_test_float(): {}", test_struct.get_test_float());
    // println!("get_test_path(): {:?}", test_struct.get_test_path());
    // println!("-------------------------------------------------------------");
    // test_struct.set_test_int(123);
    // test_struct.set_test_float(321.0);
    // test_struct.set_test_path(TestType::new(1, 0.5));
    // println!("get_test_int(): {}", test_struct.get_test_int());
    // println!("get_test_float(): {}", test_struct.get_test_float());
    // println!("get_test_path(): {:?}", test_struct.get_test_path());
    // println!("-------------------------------------------------------------");
    // println!("get_element_type_name_test_array(): {}", test_struct.get_element_type_name_test_array());
    // println!("get_array_size_test_array(): {}", test_struct.get_array_size_test_array());
    // test_struct.add_element_test_array(TestType::new(2, 1.0));
    // test_struct.add_element_test_array(TestType::new(4, 2.0));
    // println!("get_array_size_test_array(): {}", test_struct.get_array_size_test_array());
    // println!("get_test_array(): {:?}", test_struct.get_test_array());
    // println!("get_element_test_array(0): {:?}", test_struct.get_element_test_array(0));
    // println!("get_element_test_array(1): {:?}", test_struct.get_element_test_array(1));
    // println!("set_element_test_array(1): {:?}", test_struct.set_element_test_array(1, TestType::new(8, 4.0)));
    // println!("get_element_test_array(1): {:?}", test_struct.get_element_test_array(1));
    // println!("-------------------------------------------------------------");


}
